home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / src / ConfigFileSrc.lha / ConfigFileSrc12 / RexxLibrary / Misc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-10-02  |  2.1 KB  |  86 lines

  1. /*
  2. **        $PROJECT: RexxConfigFile.library
  3. **        $FILE: Misc.c
  4. **        $DESCRIPTION: Misc functions.
  5. **
  6. **        (C) Copyright 1997 Marcel Karas
  7. **             All Rights Reserved.
  8. */
  9.  
  10. #include "Misc.h"
  11.  
  12. IMPORT struct DosLibrary    *DOSBase;
  13. IMPORT struct Library        *RexxSysBase;
  14. IMPORT struct ExecBase        *SysBase;
  15.  
  16. /**************************************************************************/
  17.  
  18. STRPTR SetRC_TRUE ( VOID ) { return (CreateArgstring ("1", 1)); }
  19.  
  20. STRPTR SetRC_FALSE ( VOID ) { return (CreateArgstring ("0", 1)); }
  21.  
  22. /**************************************************************************/
  23.  
  24. BOOL IsValidArg ( struct RexxMsg * RxMsg , UBYTE ArgNum )
  25. {
  26.     if ( ( (RxMsg->rm_Action & RXARGMASK) < ArgNum ) ||
  27.             (RxMsg->rm_Args[ArgNum] == NULL) )
  28.         return (FALSE);
  29.     else
  30.         return (TRUE);
  31. }
  32.  
  33. /**************************************************************************/
  34.  
  35. STRPTR CreateNumArgStr ( ULONG Number )
  36. {
  37.     UBYTE    TmpStr[11];
  38.  
  39.     SPrintf (TmpStr, "%ld", Number);
  40.     return (CreateArgstring (TmpStr, StrLen (TmpStr)));
  41. }
  42.  
  43. /**************************************************************************/
  44.  
  45. VOID * GetAdrArg ( struct RexxMsg *RxMsg , UBYTE ArgNum )
  46. {
  47.     if ( IsValidArg (RxMsg, ArgNum) )
  48.     {
  49.         ULONG    Long;
  50.  
  51.         if ( StrToLong (RxMsg->rm_Args[ArgNum], (LONG *)&Long) != -1 )
  52.             return ((VOID *)Long);
  53.     }
  54.  
  55.     return (0);
  56. }
  57.  
  58. /**************************************************************************/
  59.  
  60. VOID SetErrVar ( struct RexxMsg * RxMsg, UBYTE Func, UBYTE Error )
  61. {
  62.     RXCFStrConv    ErrConv;
  63.  
  64.     switch (Func)
  65.     {
  66.         case ERRFUNC_OPEN:    ErrOpenToStr  (&ErrConv, Error); break;
  67.         case ERRFUNC_READ:    ErrReadToStr  (&ErrConv, Error); break;
  68.         case ERRFUNC_WRITE:    ErrWriteToStr (&ErrConv, Error); break;
  69.     }
  70.  
  71. #define RXCF_ERRCODE    "CFERRCODE"
  72. #define RXCF_ERRSTR    "CFERRSTR"
  73.  
  74. //    SetRxVar (RxMsg, RXCF_ERRCODE, ErrConv.Str, ErrConv.Len);
  75.     SetRxVar (RxMsg, "RC", ErrConv.Str, ErrConv.Len);
  76. }
  77.  
  78. /**************************************************************************/
  79.  
  80. STATIC ULONG Tricky=0x16C04E75; /* MOVE.B D0,(A3)+ ; RTS */
  81.  
  82. VOID SPrintf (STRPTR Buffer, STRPTR Fmt, ...)
  83. { RawDoFmt (Fmt, (ULONG *)&Fmt+1, (void (*)())&Tricky, Buffer); }
  84.  
  85. /**************************************************************************/
  86.